﻿using SmartWMS.Common.ResponseOutput;
using SmartWMS.Domain.Base;
using SmartWMS.Server.WarehouseManage.StockManagement.Dto;

namespace SmartWMS.Server.WarehouseManage.StockManagement
{
	/// <summary>
	/// 入库管理
	/// </summary>
	public interface IStockServe:ITransientServer
    {
        /// <summary>
        /// 显示入库管理(分页)
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Response<List<StockDto>>> GetStockList(StockSelectDto input);

        /// <summary>
        /// 添加入库信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Response<bool>> PostStockAdd(StockAdd input);


        /// <summary>
        /// 获取采购列表
        /// </summary>
        /// <returns></returns>
        Task<List<ProcureManagementCode>> GetProcureManagementList();


        /// <summary>
        /// 入库单详细
        /// </summary>
        /// <returns></returns>
        Task<InWarehouseListDto> GetInWarehouseList(KeyEntity Id);

        /// <summary>
        /// 获取产品列表
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        Task<List<ProductDtoInWar>> GetProductDtojwz(KeyEntity Id);

        /// <summary>
        /// 反填入库
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        Task<StockAdd> GetBackFill(KeyEntity Id);

        /// <summary>
        /// 反填入库详细
        /// </summary>
        /// <param name="WarehousingCode"></param>
        /// <returns></returns>
        Task<List<InWarehouseDetailAdd>> GetinWareDetailListBackfill(KeyEntity Id);


        /// <summary>
        /// 修改入库信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Response<bool>> PostInWareUpdate(StockAdd input);


        /// <summary>
        /// 删除入库信息
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        Task<Response<bool>> DeletInWare(KeyEntity Id);


        /// <summary>
        /// 批量删除入库信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<Response<bool>> DeleteBatches(List<StockAdd> input);


        /// <summary>
        /// 修改入库审核状态
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        Task<Response<bool>> GetInWarehouseListState(InWarehouseSteatDto input);



    }
}
